{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "tf.logging.set_verbosity(tf.logging.INFO)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From <ipython-input-3-b0ffac263758>:1: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "WARNING:tensorflow:From C:\\Users\\24586\\Anaconda3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please write your own downloading logic.\n",
      "WARNING:tensorflow:From C:\\Users\\24586\\Anaconda3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\base.py:252: _internal_retry.<locals>.wrap.<locals>.wrapped_fn (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use urllib or similar directly.\n",
      "Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.\n",
      "WARNING:tensorflow:From C:\\Users\\24586\\Anaconda3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting ./train-images-idx3-ubyte.gz\n",
      "Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.\n",
      "WARNING:tensorflow:From C:\\Users\\24586\\Anaconda3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting ./train-labels-idx1-ubyte.gz\n",
      "Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.\n",
      "Extracting ./t10k-images-idx3-ubyte.gz\n",
      "Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.\n",
      "Extracting ./t10k-labels-idx1-ubyte.gz\n",
      "WARNING:tensorflow:From C:\\Users\\24586\\Anaconda3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "(55000, 784)\n",
      "(55000,)\n",
      "(5000, 784)\n",
      "(5000,)\n",
      "(10000, 784)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "mnist = input_data.read_data_sets(\"./\")\n",
    "\n",
    "print(mnist.train.images.shape)\n",
    "print(mnist.train.labels.shape)\n",
    "\n",
    "print(mnist.validation.images.shape)\n",
    "print(mnist.validation.labels.shape)\n",
    "\n",
    "print(mnist.test.images.shape)\n",
    "print(mnist.test.labels.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "\n",
    "for idx in range(16):\n",
    "    plt.subplot(4,4, idx+1)\n",
    "    plt.axis('off')\n",
    "    plt.title('[{}]'.format(mnist.train.labels[idx]))\n",
    "    plt.imshow(mnist.train.images[idx].reshape((28,28)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = tf.placeholder(\"float\", [None, 784])\n",
    "y = tf.placeholder(\"int64\", [None])\n",
    "learning_rate = tf.placeholder(\"float\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def initialize(shape, stddev=0.1):\n",
    "  return tf.truncated_normal(shape, stddev=0.1)\n",
    "\n",
    "L1_units_count = 100\n",
    "\n",
    "W_1 = tf.Variable(initialize([784, L1_units_count]))\n",
    "b_1 = tf.Variable(initialize([L1_units_count]))\n",
    "logits_1 = tf.matmul(x, W_1) + b_1\n",
    "output_1 = tf.nn.relu(logits_1)\n",
    "\n",
    "L2_units_count = 10 \n",
    "W_2 = tf.Variable(initialize([L1_units_count, L2_units_count]))\n",
    "b_2 = tf.Variable(initialize([L2_units_count]))\n",
    "logits_2 = tf.matmul(output_1, W_2) + b_2  \n",
    "\n",
    "logits = logits_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "cross_entropy_loss = tf.reduce_mean(\n",
    "    tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y))\n",
    "\n",
    "optimizer = tf.train.GradientDescentOptimizer(\n",
    "    learning_rate=learning_rate).minimize(cross_entropy_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = tf.nn.softmax(logits)\n",
    "correct_pred = tf.equal(tf.argmax(pred, 1), y)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 32\n",
    "trainig_step = 1000\n",
    "\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "after 100 training steps, the loss is 0.895532, the validation accuracy is 0.8886\n",
      "after 200 training steps, the loss is 0.166718, the validation accuracy is 0.9078\n",
      "after 300 training steps, the loss is 0.402118, the validation accuracy is 0.9278\n",
      "after 400 training steps, the loss is 0.407288, the validation accuracy is 0.9286\n",
      "after 500 training steps, the loss is 0.287238, the validation accuracy is 0.9242\n",
      "after 600 training steps, the loss is 0.340174, the validation accuracy is 0.935\n",
      "WARNING:tensorflow:From C:\\Users\\24586\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\training\\saver.py:960: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use standard file APIs to delete files with this prefix.\n",
      "after 700 training steps, the loss is 0.22943, the validation accuracy is 0.9462\n",
      "after 800 training steps, the loss is 0.309176, the validation accuracy is 0.942\n",
      "after 900 training steps, the loss is 0.598714, the validation accuracy is 0.9428\n",
      "the training is finish!\n",
      "the test accuarcy is: 0.9319\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "\n",
    "    #定义验证集与测试集\n",
    "    validate_data = {\n",
    "        x: mnist.validation.images,\n",
    "        y: mnist.validation.labels,\n",
    "    }\n",
    "    test_data = {x: mnist.test.images, y: mnist.test.labels}\n",
    "\n",
    "    for i in range(trainig_step):\n",
    "        xs, ys = mnist.train.next_batch(batch_size)\n",
    "        _, loss = sess.run(\n",
    "            [optimizer, cross_entropy_loss],\n",
    "            feed_dict={\n",
    "                x: xs,\n",
    "                y: ys,\n",
    "                learning_rate: 0.3\n",
    "            })\n",
    "\n",
    "        #每100次训练打印一次损失值与验证准确率\n",
    "        if i > 0 and i % 100 == 0:\n",
    "            validate_accuracy = sess.run(accuracy, feed_dict=validate_data)\n",
    "            print(\n",
    "                \"after %d training steps, the loss is %g, the validation accuracy is %g\"\n",
    "                % (i, loss, validate_accuracy))\n",
    "            saver.save(sess, './model.ckpt', global_step=i)\n",
    "\n",
    "    print(\"the training is finish!\")\n",
    "    #最终的测试准确率\n",
    "    acc = sess.run(accuracy, feed_dict=test_data)\n",
    "    print(\"the test accuarcy is:\", acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From C:\\Users\\24586\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\training\\saver.py:1276: checkpoint_exists (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use standard file APIs to check for files with this prefix.\n",
      "INFO:tensorflow:Restoring parameters from ./model.ckpt-900\n",
      "0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "with tf.Session() as sess:\n",
    "    ckpt = tf.train.get_checkpoint_state('./')\n",
    "    if ckpt and ckpt.model_checkpoint_path:\n",
    "        saver.restore(sess, ckpt.model_checkpoint_path)\n",
    "        final_pred, acc = sess.run(\n",
    "            [pred, accuracy],\n",
    "            feed_dict={\n",
    "                x: mnist.test.images[:16],\n",
    "                y: mnist.test.labels[:16]\n",
    "            })\n",
    "        orders = np.argsort(final_pred)\n",
    "        plt.figure(figsize=(8, 8))\n",
    "        print(acc)\n",
    "        for idx in range(16):\n",
    "            order = orders[idx, :][-1]\n",
    "            prob = final_pred[idx, :][order]\n",
    "            plt.subplot(4, 4, idx + 1)\n",
    "            plt.axis('off')\n",
    "            plt.title('{}: [{}]-[{:.1f}%]'.format(mnist.test.labels[idx],\n",
    "                                                  order, prob * 100))\n",
    "            plt.imshow(mnist.test.images[idx].reshape((28, 28)))\n",
    "\n",
    "    else:\n",
    "        pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
